package com.dek.ssm.ch2.proxy;

import java.lang.reflect.Method;

public interface Interceptor {
	
	/**
	 *  在真实对象前调用。当返回为 true 时，则反射真实对象的方法：当返回为 false 时，则调用 around 方法。
	 * @param proxy 代理对象
	 * @param target 代理对象
	 * @param method 方法
	 * @param args 运行方法参数
	 * @return
	 */
	boolean before(Object proxy , Object target , Method method, Object []args);
	
	void around(Object proxy, Object target , Method method, Object[] args);
	
	/**
	 *  在反射真实对象方法或者 around 方法执行之后，调用 after 方法
	 * @param proxy
	 * @param target
	 * @param method
	 * @param args
	 */
	void after(Object proxy, Object target, Method method, Object[]args);
	
}
